package com.piece.core.framework.annotation.permission;

import java.lang.annotation.*;

/**
 * 权限控制
 */
@Documented
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface AclPermission {

    /**
     * 权限编码
     */
    String code() default "";

    /**
     * 权限名称
     */
    String name() default "";

    /**
     * 权限控制执行方法,形式为[CLASS.METHOD]
     * <p>执行方法参数必须为[String.Class]</p>
     * <p>方法返回结果必须为Boolean</p>
     */
    String proxy() default "";

    /**
     * 请求参数
     */
    String param() default "";

    /**
     * 判断是否登录
     */
    boolean checkLogin() default true;

    /**
     * 判断登录人与请求参数一致
     */
    boolean checkOwner() default false;

    /**
     * 请求登录人参数
     */
    String checkParam() default "userId";

    /**
     * 请求登录人参数位置
     */
    String checkParamType() default "path";
}